// @ts-nocheck
/**
 * 被观察者
 * 1. 拥有所有观察者的列表数据
 * 2. 拥有发送消息的方法
 * 3. 拥有添加观察的方法
 * 4. 事件发布遍历每一个观察者并调用通知
 */
class Teacher {
	constructor() {
		this.list = []
	}
	addStudent(ob) {
		this.list.push(ob)
		return this
	}
	notify(msg) {
		this.list.forEach((ob) => ob.update(msg))
	}
}

/**
 * 观察者
 *
 */
class Student {
	constructor(name) {
		this.name = name
	}
	update(msg) {
		console.log(this.name + '收到了' + msg + '这条信息')
	}
}

const observer = new Teacher()
const stu1 = new Student('张三')
const stu2 = new Student('李四')
observer.addStudent(stu1).addStudent(stu2)
observer.notify('中秋放假了')
